<!DOCTYPE html>
<html>
<head>
	<title>闭包总结</title>
</head>
<body>
<script>
<!-- 可以读取内部变量 -->
　　var n=999;

　　function f1(){
　　　　alert(n);
　　}

　　f1(); // 999
// 另一方面，在函数外部自然无法读取函数内的局部变量。
/**
 * function f1(){
　　　　var n=999;
　　}

　　alert(n); // error
 */

// 这里有一个地方需要注意，函数内部声明变量的时候，一定要使用var命令。如果不用的话，你实际上声明了一个全局变量！
function f1(){
　　　　n=999;
　　}

　　f1();

　　alert(n); // 999
            // 
// 那就是在函数的内部，再定义一个函数。
function f1(){

　　　　var n=999;

　　　　function f2(){
　　　　　　alert(n); // 999
　　　　}

　　}

/**
 * 1）由于闭包会使得函数中的变量都被保存在内存中，内存消耗很大，所以不能滥用闭包，否则会造成网页的性能问题，在IE中可能导致内存泄露。解决方法是，在退出函数之前，将不使用的局部变量全部删除。

2）闭包会在父函数外部，改变父函数内部变量的值。所以，如果你把父函数当作对象（object）使用，把闭包当作它的公用方法（Public Method），把内部变量当作它的私有属性（private value），这时一定要小心，不要随便改变父函数内部变量的值。
 */
</script>
</body>
</html>